
"""一、定义一个学生Student类。有下面的类属性：
1 姓名 name
2 年龄 age
3 成绩 score（语文，数学，英语) [每课成绩的类型为整数]
类方法：
 1 获取学生的姓名：get_name() 返回类型:str
2 获取学生的年龄：get_age() 返回类型:int
3 返回3门科目中最高的分数。get_course() 返回类型:int
4 将每个实例学生对象写进txt文件里，要持久保存
举例：{"姓名":"a","年龄":29,"成绩":{"语文":99,"数学":100,"英语":85}
5 获取所有学生的信息
写好类以后，可以定义2个同学测试下:
zm = Student('zhangming',20,[69,88,100])"""

# class Student:
#     def __init__(self,name,age,score):
#         self.name = name
#         self.age = age
#         self.score = score
#     def get_name(self):
#         return self.name
#     def get_age(self):
#         return self.age
#     def get_score(self):
#         return max(self.score)
#
# if __name__ == '__main__':
#     zm = Student('zhangming',20,[69,88,100])
#     zs = Student('zhangsan',23,[78,89,99])
# print(zm.__dict__)
# print(zs.__dict__)
import time

"""class Student:
    def __init__(self,name,age,score:list):
        self.name = name
        self.age = age
        self.score = score
        str1 = "{'姓名':%s,'年龄':%s,'成绩':{'语文':%s,'数学':%s,'英语':%s}}\n"%(
            self.name,self.age,self.score[0],self.score[1],self.score[2]
        )
        with open('student.txt','r',encoding='utf-8') as f :
            all_data = f.readlines()
        if all_data:
            for i in all_data:
                if self.name not in i:
                    with open('student.txt','a',encoding='utf-8') as f:
                        f.write(str1)
    def get_name(self):
        return self.name
    def get_age(self):
        return self.age
    def get_course(self):
        max_score = self.score[0]
        for i in self.score:
            if i > max_score:
                max_score = i
        return f'返回三门最高分数：{max_score}'
    def get_all_studentInfo(self):
        with open('student.txt','r',encoding='utf-8') as f:
            all_data = f.readlines()
        for i,k in enumerate(all_data):
            print(f'第{i+1}个学生姓名为：{k}')
if __name__ == '__main__':
    s1 = Student('张三',21,[97,98,89])
    s2 = Student('李四',23,[64,65,66])
    print(s1.get_age())
    print(s1.get_name())
    print(s1.get_course())
    s1.get_all_studentInfo()
    # print(s1.get_all_studentInfo())"""




"""
二、定义一个字典类：dictclass。完成下面的功能：
1 删除某个key
2 判断某个键是否在字典里，如果在返回键对应的值，不存在则返回"not found"
3 返回键组成的列表：返回类型;(list)
4 合并字典，并且返回合并后字典的values组成的列表。返回类型:(list)\
"""




"""
三、定义一个列表的操作类：Listinfo
包括的方法:
1 列表元素添加: add_key(keyname) [keyname:字符串或者整数类型]
2 列表元素取值：get_key(num) [num:整数类型]
3 列表合并：update_list(list) [list:列表类型]
4 删除并且返回最后一个元素：del_key()
"""




"""四、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
删除学生：删除的学生将不在展示
展示全部学生：可以看到全部的学生姓名
学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！"""





"""五、点餐管理系统
1》、餐馆可以新增菜品、下架菜品、修改菜品
2》、每个菜品，都有对应的库存，所有菜品的库存均为999，每出一道菜，库存-1
菜品有对应的价格，餐厅老板定义价格每道菜不允许超过15元，没有小数单位，均为整数
3》、餐馆后台有点赞系统，能够收集客户对菜品的喜好，0~5分
4》、有菜品评分提报功能，对平均分数（菜品总分/打分人数）低于3分的菜品进行强制下架；"""





"""六、定义一个桌子类（Desk），包含长（length）、宽（width）、高（height）属性，
包含一个打印桌子信息属性的方法（showInfo）。实例化2个桌子对象，为其赋予不同的属性值，
并调用showInfo方法，输出每个桌子的信息。"""
# class Desk:
#     def __init__(self,length,width,height):
#         self.length = length
#         self.width = width
#         self.heigth = height
#
#     def showInfo(self):
#         print(f"长:{self.length}宽:{self.width}高:{self.heigth}")
# if __name__ == '__main__':
#     d1 = Desk(1,2,3)
#     d2 = Desk(3,4,5)
# d1.showInfo()
# d2.showInfo()




"""七、定义一个用户类(User),用户名(username)和密码(password)是这个类的属性。"""
# class User:
#     def __init__(self,username,password):



"""八、定义一个计算器类，有加减乘除四个方法"""
# class jisuanqi:
#     def __init__(self,jia,jian,cheng,chu):
#         self.jia = jia
#         self.jian = jian
#         self.cheng = cheng
#         self.chu = chu




"""九、创建一个名为Person的类，具有以下属性和方法：
属性：name（姓名），age（年龄）
方法：greet()，打印出一句问候语，包括该人的姓名和年龄"""
# class Person:
#     def __init__(self,name,age):
#         self.name = name
#         self.age = age
#     def greet(self):
#         print(f"我叫{self.name},年龄{self.age}")
# if __name__ == '__main__':
#     zs = Person("张三",23)
# zs.greet()



"""十、定义一个图书管理系统类，图书可以新增、修改、删除，要求新增的每个图书都加到txt文本里，数据持久化
新增：图书名、作者名称、新建年月日
修改：图书名、作者名称、新建年月日
删除：图书删掉，且不在展示
查看：全量查询，精确查询，需要用户传入形参来控制返回结果"""
class BookManagementSystem:
    def addBook(self,BookName,AuthorName,CreateTime,ID):
        dict_book_obj = {BookName:{"作者名称":AuthorName,"创建时间":CreateTime,"图书ID":ID}}
        with open("book.txt",'r',encoding='utf-8') as f:
            all_data = f.read()
        if str(dict_book_obj)not in all_data:
            with open("book.txt",'a',encoding='utf-8') as f:
                f.write(str(dict_book_obj)+ "\n")
                print("新增图书成功！")
        else:
            print("图书已存在")
    def updataBook(self,BookName,NewBookName,BookAuthor,NewBookAuthor,CreateTime,NewCreateTime,ID,NewID):
        dict_book_obj = {BookName:{"作者名称":BookAuthor,"创建时间":CreateTime,"图书ID":ID}}
        dict_book_new_obj = {NewBookName:{"作者名称":NewBookAuthor,"创建时间":CreateTime,"图书ID":NewID}}
        with open("book.txt",'r',encoding='utf-8') as f:
            all_data = f.read()
            if str(dict_book_obj) not in all_data:
                print("图书不存在，修改失败")
            else:
                new_all_data = all_data.replace(str(dict_book_obj),str(dict_book_new_obj))
                with open('book.txt','w',encoding='utf-8') as f:
                    f.write(new_all_data)
                    print("修改成功！")


if __name__ == '__main__':

    b1 = BookManagementSystem()
    b1.addBook('aaa',"刘","2025-01-01",1)
    b1.updataBook('aaa','bbb',"刘","秦","2025-01-01","2222-22-22",1,2)





"""十一、创建一个名为"Car"的类，该类具有"品牌"和"颜色"属性。
创建一个"start_engine"方法，该方法打印出"启动汽车引擎！"的消息。
创建一个"stop_engine"方法，该方法打印出"关闭汽车引擎！"的消息"""
# class Car:
#     def __init__(self,kind,color):
#         self.kind = kind
#         self.color = color
#     def start_engine(self):
#         print("启动汽车引擎！")
#     def stop_engine(self):
#         print("关闭汽车引擎！")
class Car:
    def __init__(self,brand,color):
        self.brand = brand
        self.color = color
    def start_engine(self):
        print("汽车正在开火...")
        time.sleep(2)
        print("启动汽车引擎！")
    def stop_engine(self):
        print("关闭汽车引擎！")


"""十二、淘宝商家后台，可以上架商品、下架商品，功能如下：
 （1） 可以添加商品，商家添加完的商品会存到商品列表
 1.1  商品要有名称、sku、价格
 （2） 可以修改商品信息：名称、sku、价格
 （3） 可以对商品进行下架，下架后的商品不再展示"""





"""十三、定义一个人类
1.小明和小美都爱跑步
2.小美体重45.0公斤
3.小明体重75.0公斤
4.每次跑步都会减少0.5公斤
5.每次吃东西都会增加1公斤"""
# class Person:
#     def __init__(self,name,weight):
#         self.name = name
#         self.weight = weight
#     def run(self):
#         self.weight -= 0.5
#         print(f"{self.name}跑步,体重是{self.weight}")
#     def eat(self):
#         self.weight += 1
#         print(f"{self.name}吃东西,体重是{self.weight}")
#     def info(self):
#         return f"姓名{self.name},体重{self.weight}"
# if __name__ == '__main__':
#     xiaoming = Person("小明",75)
#     xiaomei = Person("小妹",45)
#     print(xiaoming.info())
#     print(xiaomei.info())
#     xiaoming.run()
#     xiaoming.eat()
#     xiaomei.run()
#     xiaomei.eat()
"""十四、士兵瑞恩有一把ak47
士兵可以开火（开火扣动的是扳机）
枪能够发射子弹（把子弹打出去）
抢能够装子弹–增加子弹数量
要求没子弹，需要输出没有子弹了，且发射失败"""




